/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamanrapatkerja;

import org.sadhar.sia.framework.ClassApplicationModule;

import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Space;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Toolbarbutton;

/**
 *
 * @author hendro
 */
public class PerekamanRapatKerjaWnd extends ClassApplicationModule {

    private Textbox txtboxNamaRapatKerja;
    private Textbox txtboxKodeRapatKerja;
    private Button btnSimpan;
    private Button btnBatal;
    private PerekamanRapatKerjaDAO rapatKerjaDAO;
    //private Grid gridRapatKerja;
    private Listbox lstboxRapatKerja;

    public PerekamanRapatKerjaWnd() {
        rapatKerjaDAO = new PerekamanRapatKerjaDAOImpl();
    }

    public void onCreate() throws Exception {
        txtboxKodeRapatKerja = (Textbox) getFellow("txtboxKodeRapatKerja");
        txtboxNamaRapatKerja = (Textbox) getFellow("txtboxNamaRapatKerja");
        btnSimpan = (Button) getFellow("btnSimpan");
        btnBatal = (Button) getFellow("btnBatal");
        //gridRapatKerja = (Grid) getFellow("gridRapatKerja");
        lstboxRapatKerja = (Listbox) getFellow("lstboxRapatKerja");
        clear();
        load();
    }

    public void clear() {
        txtboxNamaRapatKerja.setValue("");
        txtboxKodeRapatKerja.setValue("");
    }

    public void load() {
        lstboxRapatKerja.getItems().clear();
        int i = 0;
        int no = 1;
        for (final PerekamanRapatKerja rapat : rapatKerjaDAO.list()) {
            Listitem item = new Listitem();
            item.setValue(rapat);
            item.appendChild(new Listcell(String.valueOf(no++)));
            item.appendChild(new Listcell(rapat.getNamaRapatKerja()));

            Listcell cellAksi = new Listcell();

            Toolbarbutton btnUbah = new Toolbarbutton();
            btnUbah.setLabel("[ubah]");
            btnUbah.setId("btnUbah" + (i++));
            btnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    inActiveComponent(false);
                    txtboxKodeRapatKerja.setValue(rapat.getKodeRapatKerja() + "");
                    txtboxNamaRapatKerja.setValue(rapat.getNamaRapatKerja());
                }
            });


            final Toolbarbutton btnHapus = new Toolbarbutton();
            btnHapus.setLabel("[hapus]");
            btnHapus.setId("btnHapus" + (i++));
            btnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    if (Messagebox.show("Apakah data Rapat Kerja: " + rapat.getNamaRapatKerja() + " akan dihapus?", "Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                        try {
                            rapatKerjaDAO.delete(rapat);
                        } catch (Exception ex) {
                            Messagebox.show("Gagal menghapus data: " + ex.getMessage());
                        }
                        btnHapus.addForward(null, btnBatal, "onClick");
                    }
                }
            });
            cellAksi.appendChild(btnUbah);
            cellAksi.appendChild(new Space());
            cellAksi.appendChild(btnHapus);
            item.appendChild(cellAksi);
            lstboxRapatKerja.appendChild(item);
        }
    }

    public void inActiveComponent(boolean value) {
        txtboxKodeRapatKerja.setDisabled(value);
        txtboxNamaRapatKerja.setDisabled(value);
    }

    public void lstboxRapatKerjaOnSelect() throws Exception {
        inActiveComponent(true);
        PerekamanRapatKerja rapat = (PerekamanRapatKerja) lstboxRapatKerja.getSelectedItem().getValue();
        txtboxKodeRapatKerja.setValue(rapat.getKodeRapatKerja() + "");
        txtboxNamaRapatKerja.setValue(rapat.getNamaRapatKerja());
    }

    public void btnBatalOnClick() throws Exception {
        clear();
        load();
        inActiveComponent(false);
    }

    public void btnSimpanOnClick() throws Exception {
        if (txtboxNamaRapatKerja.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan masukan Nama Rapat Kerja", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
            txtboxNamaRapatKerja.setFocus(true);
            return;
        }

        PerekamanRapatKerja rapat = new PerekamanRapatKerja();
        rapat.setNamaRapatKerja(txtboxNamaRapatKerja.getValue());

        if (txtboxKodeRapatKerja.getValue().isEmpty()) {
            //new
            if (rapatKerjaDAO.select(rapat.getNamaRapatKerja()).size() <= 0) {
                try {
                    rapatKerjaDAO.insert(rapat);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Nama Rapat Kerja: " + rapat.getNamaRapatKerja() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }

        } else {
            //update
            rapat.setKodeRapatKerja(Integer.valueOf(txtboxKodeRapatKerja.getValue()));
            if (rapatKerjaDAO.select(rapat.getKodeRapatKerja(), rapat.getNamaRapatKerja()).size() <= 0) {
                try {
                    rapatKerjaDAO.update(rapat);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Nama Rapat Kerja: " + rapat.getNamaRapatKerja() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }
        }

    }
}
